1. Field of the Invention
The invention relates to memory devices and, more particularly, to programming non-volatile memory devices.
2. Description of the Related Art
Memory devices that provide persistent data storage use non-volatile memory cells. The memory devices can typically be implemented by semiconductor chips. The semiconductor chips can be used internal to electronic systems or can be used within memory cards that can be removably attached to electronic systems. Memory cards are commonly used to store digital data for use with various products (e.g., electronic products). Memory cards often use Flash type or EEPROM type memory cells to store the data. Memory cards have a relatively small form factor and have been used to store digital data for electronic products (e.g., portable consumer electronic products). A major supplier of memory cards is SanDisk Corporation of Sunnyvale, Calif.
Several methods are known for programming non-volatile memory cells. One method applies a programming pulse of a sufficiently long duration to program a memory cell. In order to guarantee that every memory cell is able to be programmed using this method, programming time and power are set for worst-case conditions. Accordingly, this “over-provisioning” approach can result in excessive average programming time and power. In another method, a series of short, high-voltage programming pulses is applied to a memory cell. After each programming pulse, a nominal-voltage reading pulse is applied to determine whether the memory cell is in a programmed state. If the memory cell is in a programmed state, no further programming pulses are applied. Otherwise, an additional programming pulse is applied, and the sequence of reading and programming continues until the memory cell is eventually in a programmed state. One disadvantage of this approach is the time and power overhead associated with switching between program and read voltages. Another disadvantage of this approach is that the use of short programming pulses (as compared to a long, continuous programming pulse) tends to be less energy efficient.
More recently, a method for programming non-volatile memory cells made use of detection circuits. While a particular memory cell is being programmed, a detection circuit determines whether the memory cell is in a programmed state. Once the memory cell is detected to have reached the programmed state, the programming of the memory cell is terminated. Additional details on this method for programming are provided in U.S. Pat. No. 6,574,145.
Conventionally, non-volatile memory cells require careful control of the current used during a programming operation. One type of non-volatile memory cell is a diode-based non-volatile memory cell which utilizes an antifuse structure. During programming, the antifuse structure is “popped” or “blown” during a program (or write) event. However, the characteristics of such memory cells are that the current utilized to program the memory cells is directly related to the final read current on a read event. Hence, accurate control over the program (or write) current is needed in order to later properly read data from the memory cell. This is particularly true for memory cells that are programmed to utilize more than two levels, such as multi-level data storage (e.g., multi-bit data storage). With multi-level data storage, more than two distinct levels of current are needed during programming of a single memory cell. As more levels of current are needed, the accuracy of the control over the program current becomes even more important.
Thus, there is a need for improved approaches to controlling currents supplied to memory cells during program operations.